home *** CD-ROM | disk | FTP | other *** search
- {IDIOT PASCAL 101
- ----------------
-
- Welcome to IP 101. In today's lesson we will be answering a few
- often asked questions about Turbo Pascal. if you signed up For
- IDIOT C/C++ 101, please get up and run beFore you get shot.
-
- Q: HOW do I TURN ofF/ON THE KEYBOARD FROM MY Program?
- A: Easy. Though you may search through many books, you will find
- the answer in a Excellent reference called _THE MS-Dos
- ENCYCLOPEDIA_. It tells of a mystical I/O port where you can
- turn off/on the keyboard by just flipping a bit. This port is
- the 8259 Programmible Interrupt Controller. Now, part of the
- 8259 is the Interrupt Mask Register, or IMR For short. The
- port location is $21. to turn off the Keyboard...(RECKLESSLY)
-
- } Procedure KEYBOARD_ofF;
-
- begin
- PorT[$21]:=$02
- end;
- {
- to turn the keyboard back on (RECKLESSLY), just set the port
- back to $0.
-
- (THE MSDos ENCYCLOPEDIA (C) 1988 Microsoft Press p417)
-
- Q: HOW do I FLIP BITS ON/ofF in A Byte or Integer?
- A: Simple, Really. The following Procedures work on both
- Byte,Char,Boolean,Integer, and Word values(I hope).
- }
- Procedure SBIT(Var TARGET;BITNUM:Integer); {set bit}
-
- Var
- SUBJECT : Integer Absolute TARGET;
- MASK : Integer;
-
- begin
- MASK := 1 SHL BITNUM;
- SUBJECT := SUBJECT or MASK
- end;
-
- Procedure CBIT(Var TARGET;BITNUM:Integer); {clear bit}
-
- Var
- SUBJECT : Integer Absolute TARGET;
- MASK : Integer;
-
- begin
- MASK := not(1 SHL BITNUM);
- SUBJECT := SUBJECT and MASK
- end;
-
- Procedure SETBIT(Var TARGET;BITNUM:Integer;VALUE:Byte);{control}
- {Proc. }
- begin
- if VALUE = 1 then
- SBIT(TARGET,BITNUM)
- else
- CBIT(TARGET,BITNUM)
- end;
-